/**
 * RSA加解密工具类
 * 依赖: jsencrypt.js
 * 密钥生成: http://web.chacuo.net/netrsakeypair
 */
const RsaCrypto = {
    // 公钥
    publicKey: 'MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAKoR8mX0rGKLqzcWmOzbfj64K8ZIgOdH\n' +
        'nzkXSOVOZbFu/TJhZ7rFAN+eaGkl3C4buccQd/EjEsj9ir7ijT7h96MCAwEAAQ==',

    // 私钥(实际项目中建议后端持有，前端如需解密才配置)
    privateKey: '', // 请填写你的私钥

    /**
     * 加密方法
     * @param {string} txt - 待加密的字符串
     * @returns {string|null} 加密后的字符串，失败返回null
     */
    encrypt: function(txt) {
        // 校验输入
        if (!txt || typeof txt !== 'string') {
            return null;
        }

        try {
            const encryptor = new JSEncrypt();
            encryptor.setPublicKey(this.publicKey);
            const result = encryptor.encrypt(txt);

            if (!result) {
                return null;
            }
            return result;
        } catch (e) {
            return null;
        }
    },

    /**
     * 解密方法
     * @param {string} encryptedTxt - 加密后的字符串
     * @returns {string|null} 解密后的字符串，失败返回null
     */
    decrypt: function(encryptedTxt) {
        // 校验输入
        if (!encryptedTxt || typeof encryptedTxt !== 'string') {
            return null;
        }

        // 校验私钥
        if (!this.privateKey) {
            return null;
        }

        try {
            const decryptor = new JSEncrypt();
            decryptor.setPrivateKey(this.privateKey);
            const result = decryptor.decrypt(encryptedTxt);

            if (!result) {
                return null;
            }
            return result;
        } catch (e) {
            return null;
        }
    }
};